perm filename ARMDRV.FAI[LOU,BGB] blob sn#117404 filedate 1974-12-08 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE ARMDRV
C00007 ENDMK
C⊗;
	TITLE ARMDRV
	INTERNAL DRIVE
	I←←3
	MQ←←1
	P←←17
	ARM←←450

DRIVE:	SETZM DTST
	MOVE 1,-1(17)
	MOVEM 1,TIME
	SETOM FIRST
	SKIPE -4(17)
	JRST BLUE
	MOVM 1,-2(17)
	FDVR 1,[30.0]
	FIX 1,211000
	CAILE 1,776000
	MOVEI 1,776000
	TRC 1,400000
	MOVE 3,-3(17)
	HRLI 1,(3)
	MOVEM 1,DAC1
	MOVM 1,-5(17)		;D2
	FDVR 1,[30.0]
	FIX 1,211000
	CAILE 1,776000
	MOVEI 1,776000
	TRC 1,400000
	MOVE 3,-3(17)
	HRLI 1,(3)
	MOVEM 1,DAC2
	MOVE 4,MMASK(3)
	SKIPGE -2(17)
	TDC 4,DMASK(3)
	MOVEM 4,MOT1
	MOVE 4,MMASK(3)
	SKIPGE -5(17)
	TDC 4,DMASK(3)
	MOVEM 4,MOT2
;	LOCK 1,
	SPCWAR 1,PO
SWM:	SKIPN DTST
	JRST .-1
;	UNLOCK 1,
	SPCWAR 636367
	SUB 17,[XWD 6,6]
	JRST @6(17)

PO:	SKIPE FIRST
	JRST[	DATAO 420,[3]
		SETZM FIRST
		CALLI 400024]
	SOSGE 1,TIME
	JRST[	DATAO 420,[2]
		SETOM DTST
		CALLI 400024]
	IDIVI 1,=20
	TRNE 1,1
	JRST[	DATAO 600,DAC2
		DATAO 420,MOT2
		CALLI 400024]
	DATAO 600,DAC1
	DATAO 420,MOT1
	CALLI 400024

BLUE:	MOVE 3,-3(17)
	MOVEM 3,JOINT
	MOVE 2,-2(17)
	FIX 2,233000
	MOVEM 2,DAC1
	MOVE 2,-5(17)
	FIX 2,233000
	MOVEM 2,DAC2
;	LOCK 1,
	SPCWAR 1,BPO
	JRST SWM

MOTDRV:	MOVE MQ,-1(P)		;≤-100 DRIVE IN AC ≤77, JOINT IN I
	CAIL MQ,77
	JRST[	MOVEI MQ,77
		JRST DPIT]
	MOVN MQ,MQ
	CAILE MQ,100
	JRST[	MOVEI MQ,100
		JRST DPNIT]
DPNIT:	MOVN MQ,MQ
DPIT:	DPB MQ,MOTPTR(I)
	DATAO ARM,@MOTPTR(I)
	SUB P,[XWD 2,2]
	JRST @2(P)
MOTPTR:	POINT 7,MOTDAT,6
	POINT 7,MOTDAT,13
	POINT 7,MOTDAT,20
	POINT 7,MOTDAT,27
	POINT 7,MOTDAT,34
	POINT 7,MOTDAT+1,6
	POINT 7,MOTDAT+1,13
	POINT 7,MOTDAT+1,20
	POINT 7,MOTDAT+1,27
	POINT 7,MOTDAT+1,34
MOTDAT:	0
	1
MOTBRK:	0

MOTSTP:	MOVE MQ,MOTBRK
	TDZ MQ,BBIT(I)
	CONO ARM,(MQ)
	MOVEM MQ,MOTBRK
	MOVEI MQ,0
	DPB MQ,MOTPTR(I)
	DATAO ARM,@MOTPTR(I)
	POPJ P,

MOTSTA:	MOVE MQ,MOTBRK
	TDO MQ,BBIT(I)
	CONO ARM,1(MQ)
	MOVEM MQ,MOTBRK
	POPJ P,
BBIT:	400000
	200000
	100000
	 40000
	 20000
	 10000
	  4000
	  2000
	  1000
	   400
BPO:	
	MOVE P,[IOWD 10,PDL]
	MOVE I,JOINT
	SKIPE FIRST
	JRST[	PUSHJ P,MOTSTA
		SETZM FIRST
		CALLI 400024]
	SOSL 1,TIME
	JRST[	IDIVI 1,=20
		TRNE 1,1
		JRST[	PUSH P,DAC2
			JRST DMB]
		PUSH P,DAC1
	DMB:	PUSHJ P,MOTDRV
		CALLI 400024]
	PUSHJ P,MOTSTP
	SETOM DTST
	CALLI 400024
MOT1:	0
MOT2:	0
DAC1:	0
DAC2:	0
FIRST:	0
TIME:	0
JOINT:	0
DTST:	0
PDL:	BLOCK 10


MMASK:	XWD 400000,200002
	XWD 200000, 40002
	XWD 100000, 30002
	XWD  40000,  2002
	XWD  20000,  1402
	XWD  10000,   302
	XWD   4000,    22
DMASK:	400000
	100000
	 20000
	  4000
	  1000
	   200
	    40
	END